#include <iostream>
#include <cstring>
using namespace std;

/*
	子类和父类出现同名方法
	经典的面试问题？
	   请问 重载和隐藏有什么区别?
	隐藏：  
       第一: 必须是发生在父子类之间 
       第二：子类必须要重新定义跟父类相同名字的函数，参数可以相同，也可以不相同
             此时子类会隐藏父类的同名方法,隐藏的具体体现，子类对象无法直接调用父类的同名方法了，必须子类对象.父类名::同名方法() 	
*/
class Animal
{
public:
	void eat()
	{
		cout<<"动物吃"<<endl;
	}
};
class Cat:public Animal
{
public:
	void eat()
	{
		cout<<"猫吃鱼"<<endl;
	}

};

int main(int argc,char **argv)
{
	Cat c1;
	//此时通过子类对象无法直接调用父类的eat(父类同名方法被隐藏)
	c1.eat(); 
	//程序员如果一定要调用父类的同名
	c1.Animal::eat();

	return 0;	
}